1
Introdução aos Agentes de Resolução de Problemas
PolyU COMP5511Lecture 2
00:00

Do Reflexo ao Planejamento

Na evolução do design de agentes, partimos dos Agentes Reflexos, que mapeiam percepções diretamente em ações com base em regras simples (por exemplo, "Se o carro da frente freia, inicie a frenagem"), para os Agentes de Resolução de Problemas. Os agentes reflexos operam no contexto imediato, enquanto os agentes de resolução de problemas são Baseados em Objetivos. Eles consideram as consequências futuras de suas ações para encontrar uma sequência que satisfaça um objetivo específico.

  • Agente Reflexo: $Action = Function(Percept)$
  • Agente de Planejamento: $Action\_Sequence = Search(State, Goal)$

A Representação Atômica de Estado

Neste nível fundamental, os agentes utilizam uma Representação Atômica. Isso significa que o estado do mundo é tratado como uma caixa-preta — um único nó sem estrutura interna visível ao algoritmo de busca. O agente raciocina apenas sobre:

  • Estados ($S$): Instantâneos do ambiente.
  • Ações ($A$): Transições entre estados.
  • Teste de Objetivo: Uma verificação booleana se o estado $s \in S_{goal}$.

O Ciclo de Resolução de Problemas

Um agente de resolução de problemas segue um ciclo distinto de quatro etapas para navegar no ambiente:

  1. Formulação do Objetivo: Decidir qual objetivo perseguir com base na situação atual.
  2. Formulação do Problema: Abstrair o mundo real em um modelo matemático (Estados e Ações).
  3. Busca: Simular sequências de ações para encontrar o caminho ótimo.
  4. Execução: Executar as ações encontradas durante a fase de busca sem deliberação adicional (assumindo um ambiente estático).
Implementação em Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)